import ToastComponet from './vue-toast.vue'

// 定义插件名字
let Toast = {}

// vue插件固定
Toast.install = function (Vue, options) {

    // 基础设置的参数
    var opt = {
        duration:3000

    }

    // 如果用户传入
    for (var key in options) {
        opt[key] = options[key]
    }

    /**
     * 在原型上拓展出自定义的属性
     * @param message 传入的消息
     * @param option 需要设置的参数
     */
    Vue.prototype.$toast = function (message, option) {
        // 局部定义
        if (typeof option == 'object') {
            for (var key in option) {
                opt[key] = option[key]
            }
        }

        // 继承模版，得到一个全新的实例
        const ToastController = Vue.extend(ToastComponet);
        // 新建实例并挂载到指定的模版上
        var instance = new ToastController().$mount(document.createElement('div'));
        instance.message = message;

        // 显示还是隐藏
        instance.visible = true;

        // 添加到文档中去
        document.body.append(instance.$el);

        // 控制3s隐藏
        setTimeout(()=>{
            instance.visible = false;
            document.body.removeChild(instance.$el);
        },opt.duration)

    };

    // 丰富拓展
    Vue.prototype.$toast['show'] = function (message, option) {
        Vue.prototype.$toast(message, option)
    }

    Vue.prototype.$toast['success'] = function (message, option) {
        Vue.prototype.$toast(message, option)
    }

    Vue.prototype.$toast['error'] = function (message, option) {
        Vue.prototype.$toast(message, option)
    }

}

// 默认使用
if (window.Vue) {
    Vue.use(Toast);
}

// 输出
export default Toast;